//
// Created by 施旗坤 on 2025/11/9.
//
#include "admin_front_user.h"
// database.h 中错误的代码（包含函数体）
int clear_buffer() {
    int c;
    while ((c = getchar()) != '\n' && c != EOF);
}
int block_user() {
    int id;
    printf("请输入要拉黑的用户ID: ");
    if (scanf("%d", &id) != 1 || id <= 0) {
        printf("输入错误：请输入有效的数字\n");
        clear_buffer();
        return -1;
    }
    char sql[256];
    snprintf(sql, sizeof(sql),
             "UPDATE front_user "
             "SET user_status = 1 "
             "WHERE id = %d;",
             id);

    char *errmsg = NULL;
    int ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
    if (ret != SQLITE_OK) {
        fprintf(stderr, "拉黑用户失败: %s\n", errmsg);
        sqlite3_free(errmsg);
        return ret;
    }
    if (sqlite3_changes(db) == 0) {
        printf("未找到ID为 %d 的用户，拉黑失败\n", id);
        return -2;
    }

    printf("用户ID %d 已成功拉黑\n", id);
    return SQLITE_OK;
}

int unblock_user() {
    int id;
    printf("请输入要取消拉黑的用户ID: ");
    if (scanf("%d", &id) != 1 || id <= 0) {
        printf("输入错误：请输入有效的数字\n");
        clear_buffer();
        return -1;
    }
    char sql[256];
    snprintf(sql, sizeof(sql),
             "UPDATE front_user "
             "SET user_status = 0 "
             "WHERE id = %d;",
             id);
    char *errmsg = NULL;
    int ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
    if (ret != SQLITE_OK) {
        fprintf(stderr, "取消拉黑用户失败: %s\n", errmsg);
        sqlite3_free(errmsg);
        return ret;
    }

    if (sqlite3_changes(db) == 0) {
        printf("未找到ID为 %d 的用户，取消拉黑失败\n", id);
        return -2;
    }

    printf("用户ID %d 已成功取消拉黑\n", id);
    return SQLITE_OK;
}

/**
 * 修改用户信息子菜单
 * 输入1：拉黑用户；输入2：取消拉黑；输入3：返回上一级（管理员主菜单）
 */
void update_front_user() {
    int running = 1;
    while (running) {
        printf("\n===== 修改用户权限子菜单 =====\n");
        printf("1. 拉黑用户\n");
        printf("2. 取消拉黑用户\n");
        printf("3. 返回上一级（管理员菜单）\n");
        printf("请选择操作: ");

        int choose;
        scanf("%d", &choose);

        switch (choose) {
            case 1:
                block_user();  // 执行拉黑
                break;
            case 2:
                unblock_user();  // 执行取消拉黑
                break;
            case 3:
                running = 0;  // 退出子菜单，返回主菜单
                printf("返回管理员主菜单...\n");
                break;
            default:
                printf("无效选项，请重新输入（1-3）\n");
        }
    }
}